#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "component/window.h"
#include "statusbar/StatusBar.h"
#include "title/TitleBar.h"
#include "component/menu_tree_list.h"
#include "router.h"

#include <QMainWindow>
#include <QSplitter>
#include <QDockWidget>
#include <QStackedWidget>

class MainWindow : public Window {
    Q_OBJECT

  public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

  private slots:
    void onButtonMinClicked();
    void onButtonRestoreClicked();
    void onButtonMaxClicked();
    void onButtonCloseClicked();
    void onItemClicked(const QTreeWidgetItem *item);      // 菜单树点击槽函数


  private:
    void initUI();
    void loadStyleSheet();
    void initTitleBar();
    void initStatusBar();
    void initCenterContext();
    void initDockWidget();        // 初始化停靠窗口
    void initMenuTreeList();
    void setStackedWidget();


  private:
    TitleBar *titleBar;
    StatusBar *statusBar;
    QSplitter *splitter;            // 窗口中心内容区分割
    MenuTreeList *menuTreeList;     // 菜单树
    RouterManager *routerManager;   // 路由管理器
    QStackedWidget *stackedWidget;   // 路由页面


    

    // QDockWidget *menuListDockWidget;



};
#endif // MAINWINDOW_H
